package leetcode.array;

import java.util.PriorityQueue;

/**
 * @author Cheng Jun
 * Description: 给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
 *
 * 注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
 * https://leetcode.cn/problems/largest-number/
 * @version 1.0
 * @date 2022/7/25 20:39
 */
public class largestNumber {

    public String largestNumber(int[] nums) {
        PriorityQueue<String> heap = new PriorityQueue<>((x, y) -> (y + x).compareTo(x + y));
        for(int num: nums) heap.offer(String.valueOf(num));
        StringBuilder resSb = new StringBuilder("");
        while(heap.size() > 0) resSb.append(heap.poll());
        String res = resSb.toString();
        if(res.charAt(0) == '0') return "0";
        return res;
    }
}
